//
// Created by jinbang.li on 2023/5/14.
//

#ifndef OPENPLAYDEMO_IOPOBSERVER_H
#define OPENPLAYDEMO_IOPOBSERVER_H
#include "../Data/OpData.h"
#include "../Demux/OpThread.h"
#include <vector>
#include <mutex>
class IOpObserver : public OpThread{
public:
    /**
     * 观察者接收数据函数
     * @param data
     */
    virtual void update(OpData data){}
    /**
     *  添加观察者
     * @param obs
     */
    void addObservers(IOpObserver *obs);
    /**
     * 通知所有观察者
     * @param data
     */
    void notify(OpData data);

protected:
    std::vector<IOpObserver *>observers;
    std::mutex mutex;
};


#endif //OPENPLAYDEMO_IOPOBSERVER_H
